package com.chengh.nami.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.chengh.nami.common.domain.pojo.SysMenu;
import com.chengh.nami.system.domain.vo.RouterVo;

import java.util.List;

/**
 * @author chengh
 */
public interface ISysMenuService extends IService<SysMenu> {

    /**
     * 根据用户的id获取用户的菜单
     *
     * @param userId 用户id
     * @return 菜单集合
     */
    List<SysMenu> getMenuByUserId(Long userId);

    /**
     * 根据角色ID获取菜单
     *
     * @param roleId 角色ID
     * @return 菜单集合
     */
    List<SysMenu> getMenuByRoleId(Long roleId);

    /**
     * 获取全部的菜单信息
     *
     * @return 菜单树
     */
    List<SysMenu> getList(SysMenu sysMenu);

    /**
     * 添加菜单
     *
     * @param sysMenu 菜单信息
     */
    void addMenu(SysMenu sysMenu);

    /**
     * 根据ID删除菜单
     *
     * @param id 菜单ID
     */
    boolean deleteById(Long id);

    /**
     * 根据IU获取菜单
     *
     * @param id 菜单ID
     * @return 菜单信息
     */
    SysMenu getMenuById(Long id);

    /**
     * 构建前端路由所需要的菜单
     *
     * @param menus 菜单列表
     * @return 路由列表
     */
    List<RouterVo> buildMenus(List<SysMenu> menus);

}
